이스트캠프 Java 퀴즈 4

📘 오늘 학습한 내용

1️⃣ Java


📝 퀴즈

🧩 퀴즈 1

Q. 아래 컬렉션의 종류들에 대한 비교표에 들어갈 내용을 정리해보세요.
20250527_java_quiz_1.png

📝 나의 답변:

항목 List Set Map
데이터 구조 배열 집합 key와 value 쌍
키 중복 키 없음 키 없음 중복 불가
값 중복 가능 불가능 가능
순서 유지 가능 LinkedHashSet, TreeSet 가능 LinkedHashMap, TreeMap 가능
정렬 가능 LinkedHashSet, TreeSet 가능 LinkedHashMap, TreeMap 가능
인덱스 접근 ArrayList 가능 불가능 불가능

✅ 피드백:

항목 List Set Map
데이터 구조 순차 자료구조 (동적 배열·연결리스트) 집합 자료구조 (해시 테이블·균형 트리) 키-값 매핑 구조 (해시 테이블·균형 트리)
키 중복 해당 없음 해당 없음 허용 안 함(중복 키는 마지막 값으로 덮어씀)
값 중복 허용 허용 안 함 값은 중복 허용
순서 유지 삽입 순서 유지 보장 안 함 HashSet삽입 순서 LinkedHashSet정렬 순서 TreeSet 보장 안 함 HashMap삽입 순서 LinkedHashMap키 정렬 TreeMap
정렬 지원 Collections.sort() 등 별도 정렬 필요 TreeSet은 자동 정렬 TreeMap은 키 자동 정렬
인덱스 접근 있음 get(i) O(1) 없음 키로만 접근 (인덱스 개념 없음)

🧩 퀴즈 2

Q. ArrayList와 LinkedList의 차이를 간단히 설명하세요.

📝 나의 답변:

ArrayList : 배열 형태로 저장하며 index를 가지고 있다.
LinkedList : 노드 형태로 저장하며 index가 없다.
- 노드 = 주소 + 데이터

✅ 피드백:

ArrayList : 동적 배열 형태
- 검색 : O(1)
- 삽입/삭제 : O(n)
- 메모리 효율이 높음
- 읽기, index 기반 처리에 주로 사용

LinkedList : double LinkedList 형태
- 검색 : O(n)
- 삽입/삭제 : O(1) (노드 참조 확보 시에만)
- 메모리 효율이 조금 낮음(주소값 + 데이터 저장)
- Queue, Stack처럼 중간의 삽입/삭제가 자주 일어나는 경우 주로 사용

🧩 퀴즈 3

Q. HashSet과 TreeSet의 차이점, HashMap과 TreeMap의 차이점을 서술하세요.

📝 나의 답변:

HashSet과 HashMap은 순서가 없는 반면, TreeSet과 TreeMap은 순서가 존재합니다.

✅ 피드백:

HashSet TreeSet HashMap TreeMap
저장형태 value value key-value key-value
내부 구조 Hash Table Red-Black Tree Hash Table Red-Black Tree
정렬/순서 X 자동 정렬 X key로 정렬
연산 성능 O(1) O(log n) O(1) O(log n)
null 허용 1개 허용 X key : 1개 허용
value : 여러 개 허용
key : X

🧩 퀴즈 4

Q. Set을 정렬된 형태로 저장하고 싶다면 어떤 클래스를 사용해야 하나요?

📝 나의 답변:

TreeSet, LinkedHashSet

🧩 퀴즈 5

Q. Map에서 키의 중복을 허용하지 않는 이유는 무엇이라고 생각하나요?

📝 나의 답변:

Map에선 key-value 쌍으로 데이터를 저장하는데, 
같은 key가 존재하면 기존 value를 다시 덮어쓰기 때문인 것 같다.

✅ 피드백:

1. 식별성 문제(고유성 문제)
   - key를 기반으로 탐색을 진행하는데, 중복된 key가 존재하면 어떤 것을 식별해야할 지 문제가 생김

2. 검색 성능상의 문제(빠른 검색 철학 문제)
   - key-value(단일값)이 mapping되어 있음을 전제로 검색하는데, key가 단일값이 아닐 경우
   검색을 추가적으로 진행해야 함
   - 시간 복잡성이 O(1) 또는 O(log n)이 아닌 O(n)으로 증가함

3. API 단순화 및 예측 가능성